module get_state (
    input clk,
    input rst_n,
    input wire a,
    input wire b,
    output reg res
);

    reg a_prev, b_prev; // 用于保存上一个时钟周期的 a 和 b 的值

    always @(posedge clk or negedge rst_n) begin
        if (~rst_n) begin
            a_prev <= 1'b0;
            b_prev <= 1'b0;
            res <= 1'b0;
        end else begin
            // 如果 a 变化，则更新 a_prev
            if (a != a_prev) begin
                a_prev <= a;
                res <= a;
            end
            // 如果 b 变化，则更新 b_prev
            else if (b != b_prev) begin
                b_prev <= b;
                res <= b;
            end
        end
    end

endmodule
